package com.zxq.lawenf.service;

import java.util.Map;

import com.zxq.common.pojo.ApiResponse;
import com.zxq.common.util.PageInfoUtil;
import com.zxq.lawenf.pojo.AApproval;
import com.zxq.lawenf.pojo.ACase;
import com.zxq.lawenf.pojo.ACate;
import com.zxq.lawenf.pojo.AHistory;

/**
 * 执法模块的Service接口
 * @author 章晓琦
 */
public interface ILawEnfDbService
{
	/* == 分类(模板)操作开始 == */

    ApiResponse<Object> saveOneCateService(ACate cate);

    /**
     * 更新一条分类(模板)
     *
     * @param Cate
     * @return
     */
    ApiResponse<Object> updateOneCateService(ACate cate);

    /**
     * 删除一条分类(模板)
     *
     * @param cate
     * @return
     */
    ApiResponse<Object> deleteOneCateService(Map<String, Object> condMap);

    /**
     * 查询一条分类(模板)
     *
     * @param condMap
     * @return
     */
    ApiResponse<ACate> findOneCateService(Map<String, Object> condMap);

    /**
     * 查询多条分类(模板)
     *
     * @param condMap
     * @return
     */
    ApiResponse<ACate> findCondListCateService(PageInfoUtil pageInfoUtil, Map<String, Object> condMap);
    /* == 分类(模板)操作结束 == */

    /*----- 申请单模块管理开始 -----*/
	/**
	 * 添加一条申请单
	 * 
	 * @param Approval	申请单的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneApprovalService(AApproval approval);

	/**
	 * 更新一条申请单
	 * 
	 * @param Approval	申请单的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneApprovalService(AApproval approval);

	/**
	 * 删除一条申请单
	 * 
	 * @param condMap	删除的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneApprovalService(Map<String, Object> condMap);

	/**
	 * 查询多条申请单
	 * 
	 * @param pageInfoUtil	封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AApproval
	 */
	ApiResponse<AApproval> findCondListApprovalService(PageInfoUtil pageInfoUtil , Map<String, Object> condMap);

	/**
	 * 查询一条申请单
	 * 
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AApproval
	 */
	ApiResponse<AApproval> findOneApprovalService(Map<String, Object> condMap);
	/*----- 申请单模块管理结束 -----*/
	
	/*----- 历史模块管理开始 -----*/
	/**
	 * 添加一条历史
	 * 
	 * @param History	历史的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneHistoryService(AHistory dynasty);

	/**
	 * 更新一条历史
	 * 
	 * @param History	历史的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneHistoryService(AHistory dynasty);

	/**
	 * 删除一条历史
	 * 
	 * @param condMap	删除的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneHistoryService(Map<String, Object> condMap);

	/**
	 * 查询多条历史
	 * 
	 * @param pageInfoUtil	封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AHistory
	 */
	ApiResponse<AHistory> findCondListHistoryService(PageInfoUtil pageInfoUtil , Map<String, Object> condMap);

	/**
	 * 查询一条历史
	 * 
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是AHistory
	 */
	ApiResponse<AHistory> findOneHistoryService(Map<String, Object> condMap);
	/*----- 历史模块管理结束 -----*/
	
	/*----- 案件模块管理开始 -----*/
	/**
	 * 添加一条案件
	 * 
	 * @param Case	案件的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> saveOneCaseService(ACase case1);

	/**
	 * 更新一条案件
	 * 
	 * @param Case	案件的对象
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> updateOneCaseService(ACase case1);

	/**
	 * 删除一条案件
	 * 
	 * @param condMap	删除的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是Object
	 */
	ApiResponse<Object> deleteOneCaseService(Map<String, Object> condMap);

	/**
	 * 查询多条案件
	 * 
	 * @param pageInfoUtil	封装的分页对象;{{@link PageInfoUtil}
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACase
	 */
	ApiResponse<ACase> findCondListCaseService(PageInfoUtil pageInfoUtil , Map<String, Object> condMap);

	/**
	 * 查询一条案件
	 * 
	 * @param condMap	搜索的条件
	 * @return	封装的ApiResponse;详情参见:{@link ApiResponse}},泛型是ACase
	 */
	ApiResponse<ACase> findOneCaseService(Map<String, Object> condMap);
	/*----- 案件模块管理结束 -----*/
}
